iT邦幫忙

2026 iThome 鐵人賽

DAY 0
0
JavaScript

30天從零打造醫療資訊小系統系列 第 13 篇

Day 16|讓 Java 連上 MySQL:第一次使用 JDBC

  • 分享至 

  • xImage
  •  

前幾天我們已經完成了 HTML、Servlet、JSP,也在 MySQL 建立了 medical_system 資料庫。

但是目前還有一個問題:

Java 到底要怎麼跟 MySQL 溝通?

今天就來認識 JDBC。

⸻

一、JDBC 是什麼?

JDBC 全名是:

Java Database Connectivity

簡單來說,它就是讓 Java 程式可以跟資料庫溝通的一套 API。

我們可以把它想成一座橋:

Java 程式
↓
JDBC
↓
MySQL Connector/J
↓
MySQL

其中 MySQL Connector/J 是 MySQL 提供給 Java 使用的 JDBC Driver,可以讓 Java 程式連接 MySQL。(MySQL Developer Zone)

所以我們今天的目標就是:

Java
↓
JDBC
↓
MySQL
↓
medical_system

⸻

二、先加入 MySQL Connector/J

因為我們使用 Maven,所以不用自己下載 .jar 檔案。

在 pom.xml 裡加入 MySQL Connector/J dependency。

MySQL 官方文件也提供了透過 Maven 安裝 Connector/J 的方式,主要就是使用 com.mysql:mysql-connector-j。(MySQL Developer Zone)

加入之後,讓 Maven 重新載入 dependency。

如果 IntelliJ 沒有馬上抓到,可以點選 Maven 的 Reload。

⸻

三、建立資料庫連線類別

接著在 Java 專案裡建立:

src
└── main
└── java
└── util
└── DBConnection.java

先寫最基本的連線程式:

package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {
private static final String URL =
"jdbc:mysql://localhost:3306/medical_system?useSSL=false&serverTimezone=Asia/Taipei";
private static final String USER = "root";
private static final String PASSWORD = "你的MySQL密碼";
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
}

這裡最重要的是:

DriverManager.getConnection(...)

它會根據我們提供的資料庫 URL、帳號和密碼建立連線。

⸻

四、看懂 JDBC URL

這一行可能一開始看起來有點複雜:

jdbc:mysql://localhost:3306/medical_system

其實可以拆成:

jdbc:mysql://localhost:3306/medical_system
│ │ │ │
│ │ │ └── 資料庫名稱
│ │ └──────────── MySQL 預設 Port
│ └──────────────────── MySQL
└───────────────────────── JDBC

所以:

localhost

代表 MySQL 是跑在自己的電腦上。

3306

是 MySQL 常見的連線 Port。

medical_system

就是我們昨天建立的資料庫。

⸻

五、測試 Java 能不能連上 MySQL

我們可以另外建立一個測試類別:

import java.sql.Connection;
public class TestDB {
public static void main(String[] args) {
try (Connection conn = DBConnection.getConnection()) {
System.out.println("MySQL 連線成功!");
} catch (Exception e) {
System.out.println("MySQL 連線失敗!");
e.printStackTrace();
}
}
}

如果成功,Console 應該會看到:

MySQL 連線成功!

🎉

這代表:

Java
↓
JDBC
↓
MySQL Connector/J
↓
MySQL
↓
medical_system

已經成功連起來了。

⸻

六、為什麼要使用 try-with-resources?

你可能會注意到我這次沒有寫:

Connection conn = null;

然後最後再:

conn.close();

而是使用:

try (Connection conn = DBConnection.getConnection()) {

}

這叫做 try-with-resources。

它的好處是,當程式離開 try 區塊時,Java 會自動幫我們關閉資源。JDBC 的 Connection、Statement、ResultSet 都可以使用這種方式管理。(Oracle Docs)

所以我們可以養成一個習慣:

try (Connection conn = DBConnection.getConnection()) {
// 資料庫操作
}

而不是每次都自己記得:

conn.close();

⸻

七、帳號密碼不要直接公開

這裡有一個很重要的觀念。

我在範例裡寫:

private static final String PASSWORD = "你的MySQL密碼";

只是為了讓程式容易理解。

實際開發時,不建議把真正的資料庫密碼直接寫進 GitHub 或公開專案。

例如:

PASSWORD = "123456";

這種寫法非常不安全。

醫療資訊系統又會涉及病患資料,所以之後我們會再討論如何把:

  • 資料庫帳號
  • 資料庫密碼
  • 其他敏感設定

從程式碼中分離出去。

⸻

八、今天先做到哪裡?

今天我們先不要急著查詢病患資料。

目前完成的是:

MySQL
↓
建立 medical_system
↓
建立 patient table
↓
Java 加入 Connector/J
↓
建立 DBConnection
↓
Java 成功連上 MySQL

下一步才是:

Java
↓
JDBC
↓
SQL
↓
patient table
↓
取得病患資料

這就是我們接下來要做的事情。

⸻

今日小結

今天第一次讓 Java 成功連接 MySQL。

我學到:

  1. JDBC 是 Java 與資料庫溝通的 API。
  2. MySQL Connector/J 是 Java 連接 MySQL 的 JDBC Driver。
  3. Maven 可以直接加入 mysql-connector-j dependency。
  4. DriverManager.getConnection() 可以建立資料庫連線。
  5. try-with-resources 可以幫助我們自動關閉資料庫資源。
  6. 資料庫密碼不能直接公開在正式專案中。

到這裡,我們的系統已經從單純的網頁,開始真正碰到「資料庫」了。

Day 16 完成!

下一篇就要正式讓 Java 從 patient 資料表把病患資料查出來。這會是我們第一次真正執行 SQL 查詢。


上一篇
Day 15|建立醫療資訊系統的 MySQL 資料庫
系列文
30天從零打造醫療資訊小系統 共 13 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言